//
// Created by ddleed on 2018/12/5.
//

#ifndef TEST_IIC_H
#define TEST_IIC_H

#include "stm32f7xx_hal.h"

/**
 * IO方向设置
 */
#define CMD_READ_SDA()  {GPIOH->MODER&=~(3U<<5*2U);GPIOH->MODER|=0U<<5*2U;}	//PH5输入模式
#define CMD_WRITE_SDA() {GPIOH->MODER&=~(3U<<5*2U);GPIOH->MODER|=1U<<5*2U;}   //PH5输出模式

/**
 * IO操作
 */
#define SET_IIC_SCL(n)  (n?HAL_GPIO_WritePin(GPIOH,GPIO_PIN_4,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOH,GPIO_PIN_4,GPIO_PIN_RESET)) //SCL
#define SET_IIC_SDA(n)  (n?HAL_GPIO_WritePin(GPIOH,GPIO_PIN_5,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOH,GPIO_PIN_5,GPIO_PIN_RESET)) //SDA
#define READ_IIC_SDA    HAL_GPIO_ReadPin(GPIOH,GPIO_PIN_5)  //输入SDA

void IIC_Init(void);
void IIC_Start(void);
void IIC_Stop(void);
uint8_t IIC_Wait_Ack(void);
void IIC_Ack(void);
void IIC_NAck(void);
void IIC_Send_Byte(uint8_t tx_data);
uint8_t IIC_Read_Byte(uint8_t ack);
#endif //TEST_IIC_H
